package com.arpa.ntocc.common.common;

import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.RandomUtil;

import java.util.Date;

/**
 * 唯一运单号序列
 * @project   framework-core
 * @package   com.apa.framework.core.sequence
 * @class     OrderSequence.java
 * @author    yellow
 * @date      2016年2月29日 上午11:32:35
 * @version   1.0
 * @copyRight 山东阿帕网络技术有限公司
 * @webSite   http://www.kt56.com
 */
public class OrderSequence {
	
	/**
	 * 生成唯一运单号
	 * @return
	 * @time yellow 2016年2月29日 下午1:25:46
	 */
	public static String getOrderCode(){
		return new StringBuffer()
				.append(getSecondPart())
				.append(getThreePart())
				.toString();	
	}
	
	/**
	 * 生成唯一运单号（带前缀）
	 * @return
	 * @time yellow 2016年2月29日 下午1:25:46
	 */
	public static String getOrderCode(String prefix){
		return new StringBuffer().append(getFirstPart(prefix))
				.append(getSecondPart())
				.append(getThreePart())
				.toString();
	}
	
	/**
	 * 带前缀
	 * @return
	 * @time yellow 2016年2月29日 下午1:32:10
	 */
	private static String getFirstPart(String prefix) {
	    return prefix.toUpperCase();
	}
	
	/**
	 * 生成时间戳
	 * @return
	 * @time yellow 2016年2月29日 下午1:31:56
	 */
	private static String getSecondPart() {
		String temp_current_time = DateUtil.format(new Date(), datePattern());
		return temp_current_time.substring(2);
	}


	/**
	 * 生成4为随机数字
	 * @return
	 * @time yellow 2016年2月29日 下午1:31:32
	 */
	private static String getThreePart() {
		return RandomUtil.randomNumbers(4);
	}

    private static String datePattern() {
        return "yyyyMMddHHmmss";
    }
	
	public static void main(String[] args) {
    	for( int i=0; i<10; i++ ){
    		System.out.println(OrderSequence.getOrderCode());
    	}
    }
}
